数据离散化

1 .等距分割

将连续型变量的取值范围均匀划成n等份,每份的间距相等。如年龄在0-100范围之间,分成0-9,10-19,…,90-99共10份,每份间距都是10.向cut传入面元的数量,则会根据数据的最小值和最大值计算等长面元

1
2
df = pd.DataFrame({"age": range(0, 101, 4)})  
df["ageCut10"] = pd.cut(df["age"], 10, precision=1)

1.png-54kB

2. 等频分割

样本均匀分为n等份,每份内包含的观察点数相同。如把所有样本按年龄从小到大排序,分成你n份,每份样本人数相等。qcut可以根据样本分位数对数据进行面元划分。

1
2
df = pd.DataFrame({"age": range(0, 101, 4)})  
df["ageCut10"] = pd.qcut(df["age"], 10, precision=1)

2.png-54kB

3.自定义距离分割

如年龄按照bins=[0,18,30,60,100]的间距分割。labels=['未成年','青年',‘中年’,'老年']

1
2
3
4
5
df = pd.DataFrame({"age": range(1, 101, 4)})  
df["ageCut10"] = pd.cut(df["age"],
bins=[0,18,30,60,100],
labels=['未成年','青年','中年','老年'],
precision=1)

3.png-54kB

4.自定义分位数分割

如年龄按照bins=[0,0.1,0.5,0.8,100]的间距分割。

1
2
df = pd.DataFrame({"age": range(1, 101, 4)})  
df["ageCut10"] = pd.qcut(df["age"],[0.0,0.5,0.8,1.0],precision=3)

4.png-54kB